// 压缩混下
const JavaScriptObfuscator = require("webpack-obfuscator");

module.exports = {
  // 选项

  //  基本路径

  publicPath: "./", //  构建时的输出目录

  outputDir: "dist", //  放置静态资源的目录

  assetsDir: "static", //  html 的输出路径

  indexPath: "index.html", //文件名哈希

  filenameHashing: true, //  是否在保存的时候使用 `eslint-loader` 进行检查。

  lintOnSave: true, //  是否使用带有浏览器内编译器的完整构建版本

  runtimeCompiler: false, //  babel-loader 默认会跳过 node_modules 依赖。

  transpileDependencies: [
    /* string or regex */
  ], //  是否为生产环境构建生成 source map？

  productionSourceMap: false, //  设置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 标签的 crossorigin 属性。

  crossorigin: "", //  在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 标签上启用 Subresource Integrity (SRI)。

  integrity: false, //  调整内部的 webpack 配置

  //   chainWebpack: () => {}, // 配置 webpack-dev-server 行为。
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === "production") {
      config.optimization.minimizer[0].options.terserOptions = {
        warnings: false,
        compress: {
          drop_console: true,
          drop_debugger: true,
          pure_funcs: ["console.log"],
        },
      };
      // 为生产环境修改配置
      config.plugins.push(
        new JavaScriptObfuscator(
          {
            // 压缩代码
            compact: true,
            stringArray: true,
            log: false,
            controlFlowFlattening: true,
            identifierNamesGenerator: "hexadecimal",
            stringArrayEncoding: ["base64"],
            stringArrayThreshold: 1,
          },

          []
        )
      );
    }
  },
  devServer: {
    open: process.platform === "darwin",

    host: "0.0.0.0",

    port: 8080,

    https: false,

    hotOnly: false, // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理

    proxy: {
      "/api": {
        target: "http://app.rmsdmedia.com",

        changeOrigin: true,

        secure: false,

        pathRewrite: {
          "^/api": "",
        },
      },

      "/foo": {
        target: "<other_url>",
      },
    }, // string | Object

    before: (app) => {},
  }, // 在生产环境下为 Babel 和 TypeScript 使用 `thread-loader` // 在多核机器下会默认开启。

  parallel: require("os").cpus().length > 1, // PWA 插件的选项。 // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md

  pwa: {}, // 三方插件的选项

  pluginOptions: {
    // ...
  },
};
